package nsu.edu.zsq.bean;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * Description: 学校的组织表（院系）
 */

@NoArgsConstructor
@ToString
public class SchOrg {
    /**
     * 院系id id
     */
    private Integer id;

    /**
     * 院系名称 org_name
     */
    @NotBlank(message = "组织名称不能为空")
    @Pattern(regexp="^[\\S]{1,15}$", message="组织名称必须1-15个字符，且不能出现空格")
    private String orgName;

    /**
     * 父级组织id parent_org_id
     */
    @Min(value=0, message="排序号类型不合法")
    private Integer parentOrgId;

    /**
     * 排序号 sort
     */
    @Min(value=1, message="排序号类型不合法")
    @Max(value=99999, message="排序号类型不合法")
    private Integer sort;
    
    /**
     * 院系层级
     */
    private Integer level;
    
    /**
     * 是否有子组织
     */
	private boolean hasChildren; 
    
    /**
     * 该院系的所有子院系
     */
	
	 private List<SchOrg> schOrgChildren = new ArrayList<SchOrg>();
	
    /**
     * 操作者 operator
     */
    private String operator;

    /**
     * 操作时间 operator_time
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date operatorTime;

    /**
     * Get 组织id
     * @return id 组织id
     */
    public Integer getId() {
        return id;
    }

    /**
     * Set 组织id
     * @param id 组织id
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Get 组织名称
     * @return org_name 组织名称
     */
    public String getOrgName() {
        return orgName;
    }

    /**
     * Set 组织名称
     * @param orgName 组织名称
     */
    public void setOrgName(String orgName) {
        this.orgName = orgName == null ? null : orgName.trim();
    }

    /**
     * Get 父级组织id
     * @return parent_org_id 父级组织id
     */
    public Integer getParentOrgId() {
        return parentOrgId;
    }

    /**
     * Set 父级组织id
     * @param parentOrgId 父级组织id
     */
    public void setParentOrgId(Integer parentOrgId) {
        this.parentOrgId = parentOrgId;
    }

    /**
     * Get 排序号
     * @return sort 排序号
     */
    public Integer getSort() {
        return sort;
    }

    /**
     * Set 排序号
     * @param sort 排序号
     */
    public void setSort(Integer sort) {
        this.sort = sort;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }
    
	
	 public boolean isHasChildren() { return hasChildren; }
	 
	 public void setHasChildren(boolean hasChildren) { this.hasChildren =
	 hasChildren; }
	 
	 public List<SchOrg> getSchOrgChildren() { return schOrgChildren; }
	 
	 public void setSchOrgChildren(List<SchOrg> schOrgChildren) {
	 this.schOrgChildren = schOrgChildren; }
	 
    
    /**
     * Get 操作者
     * @return operator 操作者
     */
    public String getOperator() {
        return operator;
    }

    /**
     * Set 操作者
     * @param operator 操作者
     */
    public void setOperator(String operator) {
        this.operator = operator == null ? null : operator.trim();
    }

    /**
     * Get 操作时间
     * @return operator_time 操作时间
     */
    public Date getOperatorTime() {
        return operatorTime;
    }

    /**
     * Set 操作时间
     * @param operatorTime 操作时间
     */
    public void setOperatorTime(Date operatorTime) {
        this.operatorTime = operatorTime;
    }


}